﻿using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Text;

namespace BestTrader.Cms.RmmfSoftServices.Models
{
    public class CustomerInput
    {
        public CustomerInput() {
            Telephone = "";
            Email = "";
            SecEmail = "";
            First_Name = "FirstName";
            Last_Name = "LastName";
            English_Name = "EnglishName";
            Postal_Code = "";
            Bank_Account = "";
            Client_Type = "0";
            DefaultLanguage = 0;
            UserTypeID = 0;
            Current_Trading_Status = 1;
            CreateDate = DateTime.Now;
            LastLockoutDate = DateTime.Now;
        }

        /// <summary>
        /// 用户名，不允许特殊符号， 有效值为a-z，A-Z，0-9
        /// </summary>
        [MaxLength(40)]
        public String LoginName { get; set; }

        /// <summary>
        /// 密码，最少6位，MD5加密
        /// </summary>
        [MaxLength(100)]
        public String Password { get; set; }

        /// <summary>
        /// 真实姓名
        /// </summary>
        [MaxLength(20)]
        public String RealName { get; set; }


        /// <summary>
        /// 电话号码
        /// </summary>
        [MaxLength(18)]
        public String Telephone { get; set; }


        /// <summary>
        /// 电子邮箱
        /// </summary>
        [MaxLength(50)]
        public String Email { get; set; }


        /// <summary>
        /// 默认语言
        ///     0:Chinese_Simple
        ///     1:English
        ///     2:Chinese_Traditional
        /// </summary>
        public Int32 DefaultLanguage { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        [JsonConverter(typeof(ChinaDateTimeConverter))]
        public DateTime CreateDate { get; set; }

        /// <summary>
        /// 是否锁定
        /// </summary>
        public Boolean IsLockedOut { get; set; }

        /// <summary>
        /// 锁定时间
        /// </summary>
        [JsonConverter(typeof(ChinaDateTimeConverter))]
        public DateTime LastLockoutDate { get; set; }

        /// <summary>
        /// 备用邮箱
        /// </summary>
        [MaxLength(256)]
        public String SecEmail { get; set; }

        ///// <summary>
        ///// 经纪人ID
        ///// </summary>
        //[MaxLength(25)]
        //public String EmployeeID { get; set; }

        /// <summary>
        /// 客户类型
        ///     0:风软用户
        ///     1:易盛用户
        /// </summary>
        public Int32 UserTypeID { get; set; }

        /// <summary>
        /// 名
        /// </summary>
        [MaxLength(50)]
        public String First_Name { get; set; }

        /// <summary>
        /// 姓
        /// </summary>
        [MaxLength(50)]
        public String Last_Name { get; set; }

        /// <summary>
        /// 邮政编码
        /// </summary>
        [MaxLength(50)]
        public String Postal_Code { get; set; }

        ///// <summary>
        ///// 住宅地址
        ///// </summary>
        //[MaxLength(200)]
        //public String Address { get; set; }

        /// <summary>
        /// 手机
        /// </summary>
        [MaxLength(20)]
        public String Mobile_Phone { get; set; }


        ///// <summary>
        ///// 工作地点
        ///// </summary>
        //[MaxLength(200)]
        //public String Workplace { get; set; }

        /// <summary>
        /// 身份证明文件类型
        ///     0:身份证
        ///     1:护照
        ///     2:军人证
        ///     3:营业执照
        ///     4:组织机构证
        ///     5:香港永久居民身份证
        ///     6:港澳通行证
        ///     7:公司注册证书
        /// </summary>
        public UInt32 Identity_Type { get; set; }

        /// <summary>
        /// 证件号码
        /// </summary>
        [MaxLength(20)]
        public String Identity_Number { get; set; }

        //Identity_Number N   String[20] 证件号码
        //Fax_Number N   String[20] 传真号码
        //User_Cancel_Datetime N   DateTime 销户时间
        //Mailing_Address N   String[100] 邮寄地址
        //Company_Name N   String[100] 法人机构名称
        //Order_Entry_Assignee N   String[100] 获授权人士
        //Order_Entry_Assignee_ID N   String[100] 获授权人士证件号码
        //Funding_Source N   String[100] 资金调拨人
        //Funding_Source_ID N   String[100] 资金调拨人证件
        //Notes N   String[250] 备注

        /// <summary>
        /// 交易状态
        ///     1:正常交易
        ///     2:限制开仓
        ///     3:禁止交易
        /// </summary>
        public Int32 Current_Trading_Status { get; set; }

        /// <summary>
        /// 英文名
        /// </summary>
        // English_Name N   String[50] 英文名
        public String English_Name { get; set; }
        // DOB N   DATE 出生日期/设立日期

        /// <summary>
        /// 性别
        ///     0:男
        ///     1:女
        ///     2:不适用
        /// </summary>
        public UInt32 Gender { get; set; }

        /// <summary>
        /// 银行账户信息
        /// </summary>
        public String Bank_Account { get; set; }

        /// <summary>
        /// 银行账户名称
        /// </summary>
        public String Payee_Name { get; set; }

        //HomeNumber N   String[50] 住宅电话
        //BusinessAddress N   String[200] 商业地址
        //HomeAddress N   String[200] 住宅地址
        //Relationship_Type N   String[200] 关系
        //ID_valid_thru N   DateTime 获授权有效期
        //Identity_Issue_origin N   String[100] 签发地/设立国
        //Secondary_Identity_Type N TINYINT 辅助身份证明文件类型
        //0:身份证
        //1:护照
        //2:军人证
        //3:营业执照
        //4:组织机构证
        //5:香港永久居民身份证
        //6:港澳通行证
        //7:公司注册证书
        //Secondary_Identity_Number   N String[100] 辅助证件号码
        //Secondary_Identity_Issue_origin N String[100] 辅助证件签发地/设立国
        //Report_Delivery_Method  N String[10]  结算单发送方式
        //0:通过电子邮件发送
        //1:通过传真发送
        //2:通过邮递方式发送

        /// <summary>
        /// 户口类型
        ///     0:个人
        ///     1:联名账户
        ///     2:公司账户
        ///     3:员工账户
        ///     4:其他
        /// </summary>
        [MaxLength(100)]
        public String Client_Type { get; set; }

        //Citizenship N   String[100] 国籍/设立所在国
        //Joint_Name  N String[50]  联名户口姓名
        //Joint_English_Name  N String[50]  联名户口英文名
        //Joint_DOB   N DATE    联名户口出生日期/设立日期
        //Joint_Gender    N TINYINT 联名户口性别
        //0:男
        //1:女
        //2:不适用
        //Joint_Statement N TINYINT 联名户口交易状态
        //1:正常交易
        //2:限制开仓
        //3:禁止交易
        //Joint_Default_Language  N TINYINT 联名户口默认语言
        //0:Chinese_Simple
        //1:English
        //2:Chinese_Traditional
        //Joint_Citizenship   N String[100] 联名户口国籍/设立所在国
        //Joint_Telephone N String[50]  联名户口办公电话
        //Joint_HomeNumber    N String[50]  联名户口住宅电话
        //Joint_Postal_Code   N String[50]  联名户口邮政编码
        //Joint_Address   N String[200] 联名户口通讯地址
        //Joint_Business_Address  N String[200] 联名户口商业地址
        //Joint_Mobile_Phone  N String[20]  联名户口手机号码
        //Joint_Workplace N String[200] 联名户口工作地点
        //Joint_Identity_Type

        //    N TINYINT 联名户口身份证明文件类型
        //0:身份证
        //1:护照
        //2:军人证
        //3:营业执照
        //4:组织机构证
        //5:香港永久居民身份证
        //6:港澳通行证
        //7:公司注册证书
        //Joint_Login_Quantity    N INT 联名户口登录数量
        //Joint_Identity_Number   N String[100] 联名户口证件号码
        //Joint_Identity_Issue_origin N String[100] 联名户口签发地/设立国
        //Joint_Secondary_Identity_Type   N TINYINT 联名户口辅助身份证明文件类型
        //0:身份证
        //1:护照
        //2:军人证
        //3:营业执照
        //4:组织机构证
        //5:香港永久居民身份证
        //6:港澳通行证
        //7:公司注册证书
        //Joint_Secondary_Identity_Number N String[100] 联名户口辅助证件文件号码
        //Joint_Secondary_Identity_Issue_origin   N String[100] 联名户口辅助证件签发地/设立国
        //Joint_Fax_Number    N String[20]  联名户口传真电话
        //Joint_ID_valid_thru N DateTime    联名户口获授权有效期
        //Joint_Open_Account  N DateTime    联名户口开户时间
        //Joint_Close_Account N DateTime    联名户口销户时间
        //Joint_Secondary_Email   N String[50]  联名户口备用邮箱
        //Joint_Email N String[50]  联名户口电子邮箱
        //Joint_Mailing_Address   N String[100] 联名户口邮寄地址
        //Joint_Home_Address  N String[100] 联名户口住宅地址
        //Joint_Report_Delivery_Method    N String[10]  联名户口结算单发送方式
        //0:通过电子邮件发送
        //1:通过传真发送
        //2:通过邮递方式发送
        //Joint_Notes N String[250] 联名户口备注
        //Joint_Allocate  N String[200] 资金调拨人
        //Joint_Allocate_Identity N String[100] 调拨人证件
        //Joint_Bank_Account  N String[200] 银行账户信息
        //Joint_Payee_Name    N String[200] 银行账户名称

        /// <summary>
        /// 角色ID
        /// </summary>
        public Int32 RoleID { get; set; }

        /// <summary>
        /// 组织机构代码
        /// </summary>
        [MaxLength(10)]
        public String FirmStructureID { get; set; }
    }
}
